package com.example.servlet.quick.start.demo.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 服务器内部请求转发
 */
@WebServlet(urlPatterns = "/requestDemo6")
public class RequestDemo6 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("request demo6 was accessed");
        // 共享数据：
        // 域对象：一个有作用范围的对象，可以在范围内共享数据
        // request 域：代表一次请求的范围，一般用于请求转发的多个资源共享数据
        // 方法：
        // 1. setAttribute(String name, Object obj) // 添加共享数据
        // 2. Object getAttribute(String name)      // 获取共享数据
        // 3. removeAttribute(String name)          // 删除共享数据
        req.setAttribute("msg", "hello");
        // 浏览器地址未发生改变
        // 只能转发到当前服务器内部资源中
        // 转发是一次请求(浏览器)
        req.getRequestDispatcher("/requestDemo7").forward(req, resp);
    }
}
